/** ==================================================================================== **/
/** 							Definizione della direttiva di Loading ...				 **/
/** ==================================================================================== **/

/**
 * USO:
 *  È necessario includere nella pagina, in cui si vuole rendere disponibile il loading, la seguente direttiva:
 *  
 *   (code)
 *   	<loading-application ng-loading-visible="loadingVisible" ng-loading-message="loadingMessage"></loading-application>
 *   (code)
 *  
 * Parametri dinamici del template da valorizzare nel proprio controller o service:
 *  
 *  1. loadingVisible: true o false a seconda se il loading deve essere visibile o meno
 *  2. loadingMessage: messaggio che deve apparire nella finestra di loading, se non valorizzato viene inserita una stringa di default ("Elaborazione")
 */
BootApplication.directive('loadingApplication',["$log", 'LoadingAppService', 'configuration', function($log, LoadingAppService, configuration) {
	return {
        restrict: 'EA',
        transclude: true,
        replace: true,
        templateUrl: configuration.getParam("Constants").ContextPath+"/page/template/loading/templateLoading.jsp",
        scope: {
        	ngLoadingVisible: '=ngLoadingVisible',
        	ngLoadingMessage: '=ngLoadingMessage'
        },
        controller: ["$scope", function($scope) {
            
            $scope.$watchCollection(function($scope) {
            	return $scope.ngLoadingVisible = LoadingAppService.isLoadingVisibility();
            }, 
            function(newValue, oldValue) {
            	$scope.ngLoadingVisible = newValue;
            },
            true);
            
            $scope.$watchCollection(function($scope) {
            	return $scope.ngLoadingMessage = LoadingAppService.getLoadingMessage();
            }, 
            function(newValue, oldValue) {
            	$scope.ngLoadingMessage = newValue;
            },
            true);
        }]
	}
}]);